#include <iostream>
#include <vector>
#include <math.h>
#include <map>

std::map<int, std::vector<int>> NUMS = {{3, {153, 370, 371, 407}},
                                        {4, {1634, 8208, 9474}},
                                        {5, {54748, 92727, 93084}},
                                        {6, {548834}},
                                        {7, {1741725, 4210818, 9800817, 9926315}}};

void check(std::vector<int> &nums)
{
    for (int i = 100; i < 10000000; i++)
    {
        std::string t = std::to_string(i);
        int sz = t.size();
        int k = 0;
        for (int j = 0; j < sz; j++)
        {
            k += std::pow(t[j] - '0', sz);
        }
        if (k == i)
        {
            nums.push_back(k);
            std::cout << k << std::endl;
        }
    }
}

int main()
{
    int n, m;
    std::cin >> n;
    std::cin >> m;

    // std::vector<int> nums;
    // check(nums);
    // for (int i = 0; i < nums.size(); i++)
    // {
    //     std::cout << nums[i] << " ";
    // }
    // std::cout << std::endl;

    if (n < 3 || n > 7)
    {
        std::cout << -1 << std::endl;
    }
    else if (m >= NUMS[n].size())
    {
        std::cout << NUMS[n].back() * m << std::endl;
    }
    else
    {
        std::cout << NUMS[n][m] << std::endl;
    }

    return 0;
}